// 后端更新接口的完整类型定义

// 片段类型
export type SegmentType = 'video' | 'audio' | 'text';

// 翻转设置
export interface FlipSettings {
    horizontal: boolean;
    vertical: boolean;
}

// 缩放设置
export interface ScaleSettings {
    x: number;
    y: number;
}

// 位移设置
export interface TransformSettings {
    x: number;
    y: number;
}

// 裁剪设置
export interface ClipSettings {
    alpha: number;
    flip: FlipSettings;
    rotation: number;
    scale: ScaleSettings;
    transform: TransformSettings;
}

// 颜色设置
export interface ColorSettings {
    alpha: number;
    color: [number, number, number]; // RGB 值，范围 0-1
}

// 填充内容
export interface FillContent {
    render_type: 'solid' | 'gradient' | 'pattern';
    solid: ColorSettings;
}

// 填充设置
export interface FillSettings {
    alpha: number;
    content: FillContent;
}

// 描边设置
export interface StrokeSettings {
    width: number;
    content: {
        solid: ColorSettings;
    };
}

// 文本样式
export interface TextStyle {
    fill: FillSettings;
    range: [number, number];
    size: number;
    bold: boolean;
    italic: boolean;
    underline: boolean;
    strokes: StrokeSettings[];
}

// 片段配置
export interface SegmentConfig {
    // 只有文本设置有
    text?: string;
    // 音量设置，只有视频和音频设置组件有，文本设置没有
    volume?: number;
    // 裁剪设置
    clip?: ClipSettings;
    // 文本样式，只有文本片段有
    styles?: TextStyle[];
}

// 后端更新接口
export interface SegmentUpdateRequest {
    type: SegmentType;
    // 只有视频和音频的修改需要传递这个字段
    material_id?: string;
    // 时长所有的都需要传递
    start: number;
    duration: number;
    segment_config: SegmentConfig;
}

// Store 状态类型
export interface SegmentFormState {
    // 当前选中的片段信息
    currentSegment: {
        draftId?: string;
        trackId?: string;
        segmentId?: string;
        type?: SegmentType;
        materialId?: string;
        start?: number;
        duration?: number;
    } | null;
    
    // 当前配置状态
    config: SegmentConfig;
    
    // 加载状态
    loading: boolean;
    
    // 错误信息
    error: string | null;
}

// 更新配置的 Action 类型
export interface UpdateConfigAction {
    type: 'UPDATE_CONFIG';
    payload: Partial<SegmentConfig>;
}

// 设置当前片段的 Action 类型
export interface SetCurrentSegmentAction {
    type: 'SET_CURRENT_SEGMENT';
    payload: {
        draftId?: string;
        trackId?: string;
        segmentId?: string;
        type?: SegmentType;
        materialId?: string;
        start?: number;
        duration?: number;
    } | null;
}

// 设置加载状态的 Action 类型
export interface SetLoadingAction {
    type: 'SET_LOADING';
    payload: boolean;
}

// 设置错误的 Action 类型
export interface SetErrorAction {
    type: 'SET_ERROR';
    payload: string | null;
}

// 重置配置的 Action 类型
export interface ResetConfigAction {
    type: 'RESET_CONFIG';
}

// 所有 Action 的联合类型
export type SegmentFormAction = 
    | UpdateConfigAction
    | SetCurrentSegmentAction
    | SetLoadingAction
    | SetErrorAction
    | ResetConfigAction;
